package cn.edu.dzkd.software.controller;

import cn.edu.dzkd.software.vo.JSONUser;
import org.springframework.web.bind.annotation.*;

@RestController
@RequestMapping("/te")         // 此文件中的所有接口，必须以这里定义的前缀路径名称开始
public class TestController {

    @RequestMapping("/test")   // 网络请求接口   接口API   接口服务
    public String test() {
        return "java test string";
    }

    @RequestMapping("/check")
    public String check() {
        return "java check string";
    }

    @RequestMapping("/param00")
    public String param00() {
        return "java param00 string";
    }

    @RequestMapping("/param01")
    public String param01(String username) {
        System.out.println("username=" + username);  // 输出日志到后台运行控制台中
        return "java param01 string";
    }

    @RequestMapping(value = "/param02", method = {RequestMethod.GET, RequestMethod.POST})
    public String param02(String username, String password) {
        System.out.println("username=" + username + " password=" + password);  // 输出日志到后台运行控制台中
        return "java param02 string";
    }

    @RequestMapping(value = "/param03", method = RequestMethod.GET)
    public String param03(@RequestParam String username) {
        return "java param03 string";
    }

    // 前期只需要掌握GET和POST通信请求行为即可
    // 用户在地址栏收入输入地址的行为，都是GET行为
    // form表单默认也是GET行为，我们可以手动修改method属性为POST行为
    // 在HTTP协议中，GET和POST单词并不区分大小写(Java中必须遵守大小写)
    // Java是强类型语言，所以必须遵守大小写
    // 当页面发出405错误行为，就是执行HTTP请求协议不匹配，系统服务拒绝请求
    // 如果@RequestMapping没有定义method，则代表任何的HTTP请求行为都可以接受
    @RequestMapping(value = "/param04", method = RequestMethod.POST)
    public String param04(@RequestParam String username, @RequestParam String password) {  // 普通参数可以传递N个
        System.out.println("username=" + username + " password=" + password);
        return "java param04 string username=" + username;
    }

    @RequestMapping("/param05")
    public String param05(String username, @RequestParam String password) {
        return "java param05 string";
    }

    // json通信，不能使用get行为，因为HTTP协议决定
    // 这里会把请求中的json对象，自动转为一个VO模型，这是有微服务架构辅助完成的
    @RequestMapping(value = "/json", method = RequestMethod.POST)
    public String json(@RequestBody JSONUser jsonUser) throws Exception {   // json数据只能传输一个

        // 异常代码捕获式处理，这样的处理好处，在于后续的代码可以继续执行
        // 通常我们在服务器上不会这样处理，因为如果捕获中的代码如果出现了错误，可能后续的整体逻辑代码都会出现错误
        try {
            int a = Integer.parseInt("a");    // 把一个网络传输过来的字符串，转换成一个整数数值
        } catch (Exception e) {
            e.printStackTrace();
        }

        System.out.println("jsonUser.username=" + jsonUser.getUsername());
        return "java json string jsonUser.username=" + jsonUser.getUsername();
    }
}

